package datatypes.r2.quantities.impl;

import datatypes.r2.flavors.ST_SIMPLE;
import datatypes.r2.foundation.BL;
import datatypes.r2.quantities.INT;
import datatypes.r2.quantities.QTY;
import datatypes.r2.quantities.REAL;

/**
 * Integer numbers (-1,0,1,2, 100, 3398129, etc.) are precise numbers that are
 * results of counting and enumerating. Integer numbers are discrete, the set of
 * integers is infinite but countable. No arbitrary limit is imposed on the
 * range of integer numbers. Two NULL flavors are defined for the positive and
 * negative infinity.
 * 
 * @author Obama
 * 
 */
public class IntegerNumber implements INT {

	/**
	 * The INT value that is greater than this INT value but where no INT value
	 * exists between this value and its successor.
	 */

	private int value;

	public IntegerNumber() {
		super();
	}

	public IntegerNumber(int value) {
		super();
		this.value = value;
	}

	/**
	 * The INT value that is greater than this INT value but where no INT value
	 * exists between this value and its
	 */
	@Override
	public INT successor() {

		return new IntegerNumber(getValue() + 1);
	}

	@Override
	public INT predecessor() {
		return new IntegerNumber(getValue() - 1);
	}

	@Override
	public INT plus(QTY x) {
		// TODO Auto-generated method stub
		return null;
	}

	/**
	 * The result of multiplying this integer with the operand, equivalent to
	 * repeated additions of this integer.
	 */
	@Override
	public INT times(INT x) {
		IntegerNumber intValue = (IntegerNumber) x;
		return new IntegerNumber(value * intValue.getValue());
	}

	/**
	 * The inverse element of the INT value, another INT value, which, when
	 * added to that value yields zero (the neutral element).
	 */
	@Override
	public INT negated() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public BL isNegative() {

		return null;
	}

	@Override
	public BL nonNegative() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public REAL dividedBy(REAL x) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public INT dividedBy(INT x) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public INT remainder(INT x) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public BL isOne() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public ST_SIMPLE literal() {
		// TODO Auto-generated method stub
		return null;
	}

	public int getValue() {
		return value;
	}

	public void setValue(int value) {
		this.value = value;
	}

}
